package com.xoa.controller.equipment;


import com.xoa.dao.equipment.EquipCapyMapper;
import com.xoa.model.equipment.EquipCapy;
import com.xoa.service.equipment.EquipCapyService;
import com.xoa.util.LimsJson;
import com.xoa.util.dataSource.ContextHolder;
import net.sf.json.JSONArray;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;


@Controller
@RequestMapping("/equipCapy")
public class EquipCapyController {
    @Autowired
    public EquipCapyService equipCapyService;

    @Autowired
    private EquipCapyMapper equipCapyMapper;
    //列表
    @RequestMapping("AbilityIndex")
    public String AbilityIndex(){
        return "/app/equipment/equipmentAbility/index";
    }
    //添加
    @RequestMapping("/addCapy")
    public String addCapy(){
        return "/app/equipment/equipmentAccount/index";
    }
    //修改
    @RequestMapping("/editCapy")
    public String editCapy(){
        return "/app/equipment/equipmentAccount/index";
    }
    //设备类型编辑页
    @RequestMapping("/equiptypeDetail")
    public String equiptypeDetail(){
        return "app/lims/equipment/euqipmentType/equiptypeDetail";
    }


    @RequestMapping("/text")
    public String text(HttpServletRequest request){
        ContextHolder.setConsumerType("xoa" + (String) request.getSession().getAttribute(
                "loginDateSouse"));
        return "/app/equipment/equipmentAbility/upload";
    }
    /**
    * 创建作者:   刘欢
    * 创建日期:   9:18 2019/7/19
    * 方法介绍:   查询所有的设备能力
    * 参数说明:   * @param request
    * @param page
    * @param pageSize
    * @param useFlag
    * @return     com.xoa.util.LimsJson<com.xoa.model.equipment.EquipCapy>
    */


    @RequestMapping("/selectEquipCapy")
    @ResponseBody
    public LimsJson<EquipCapy> selectEquipCapy(HttpServletRequest request, Integer page, Integer pageSize, Boolean useFlag, String typeCode){
        return equipCapyService.selectEquipCapy(request,page,pageSize,useFlag,typeCode);
    }

    /*
    * 创建作者:   刘欢
    * 创建日期:   9:20 2019/7/19
    * 方法介绍:   新增一个设备能力
    * 参数说明:   * @param null
    * @return
    */


    @RequestMapping("/addEquipCapy")
    @ResponseBody
    public  LimsJson addEquipCapy(String json){

        JSONArray jsonarray = JSONArray.fromObject(json);
        List<EquipCapy> list = (List<EquipCapy>)JSONArray.toCollection(jsonarray,EquipCapy.class);
        return equipCapyService.addEquipCapy(list);
    }


    /**
    * 创建作者:   刘欢
    * 创建日期:   9:21 2019/7/19
    * 方法介绍:   删除选中的一个设备能力
    * 参数说明:   * @param capyId
    * @return     com.xoa.util.lims.LimsJson<com.xoa.model.equipment.EquipCapy>
    */


    @RequestMapping("/deleteEquipCapy")
    @ResponseBody
    public  LimsJson<EquipCapy> deleteEquipCapy(Integer capyId){
        return equipCapyService.deleteEquipCapy(capyId);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   9:22 2019/7/19
    * 方法介绍:   删除选中的多条信息
    * 参数说明:   * @param capyIds
    * @return     com.xoa.util.lims.LimsJson<com.xoa.model.equipment.EquipCapy>
    */


    @RequestMapping("/deleteArrayEquipCapy")
    @ResponseBody
    public  LimsJson<EquipCapy> deleteArrayEquipCapy(String ids){
        return equipCapyService.deleteArrayEquipCapy(ids);
    }


    /**
    * 创建作者:   刘欢
    * 创建日期:   9:23 2019/7/19
    * 方法介绍:   修改设备能力状态 0默认为激活，1为取消，前台需要对这个数据进行处理
    * 参数说明:   * @param capyId
    * @return     com.xoa.util.lims.LimsJson<com.xoa.model.equipment.EquipCapy>
    */

    @RequestMapping("/changeStatus")
    @ResponseBody
    public LimsJson<EquipCapy> changeStatus(String capyIds,Integer status){
        return equipCapyService.changeStatus(capyIds,status);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   9:25 2019/7/19
    * 方法介绍:   修改选中的设备能力
    * 参数说明:   * @param equipCapy
    * @return     com.xoa.util.lims.LimsJson<com.xoa.model.equipment.EquipCapy>
    */


    @RequestMapping("/editEquipCapy")
    @ResponseBody
    public LimsJson<EquipCapy> editEquipCapy(EquipCapy equipCapy){
        return equipCapyService.editEquipCapy(equipCapy);
    }



    /**
    * 创建作者:   刘欢
    * 创建日期:   19:44 2019/7/24
    * 方法介绍:   一个查询commonCode的公共接口，由于不知道写道什么地方，暂时放在这里，需要前端传过来一个
     *              parentTypeNo（每一个类型都会给定他的查询的一个标识，根据标识来查询它，）多用于下拉选择。
    * 参数说明:   * @param parentTypeNo
    * @return     java.util.List<com.xoa.model.equipment.EquipCapy>
    */
    
    @RequestMapping("/selectCommonCode")
    @ResponseBody
    public List<Object> selectCommonCode(String parentTypeNo,String codeTypeNo,Integer taskId){
        return equipCapyService.selectCommonCode(parentTypeNo,codeTypeNo,taskId);
    }


    /**
    * 创建作者:   刘欢
    * 创建日期:   8:44 2019/7/31
    * 方法介绍:   设备类型编辑能力项
    * 参数说明:   * @param
    * @return     java.util.List<java.util.Map>
    */
    @RequestMapping("/selectEquipCapyEdit")
    @ResponseBody
    public List<Map<String,Object>> selectEquipCapyEdit(Integer equipTypeId){
        return equipCapyService.selectEquipCapyEdit(equipTypeId);
    }

    /**
    * 创建作者:   刘欢
    * 创建日期:   15:50 2019/8/20
    * 方法介绍:   查询启用状态下的capy
    * 参数说明:   * @param
    * @return     com.xoa.util.lims.LimsJson
    */
    @RequestMapping("/findCapyByStatus")
    @ResponseBody
    public LimsJson findCapyByStatus(){
        LimsJson limsJson = new LimsJson(1,"err");

        List<EquipCapy> list = equipCapyMapper.selectEquipCapy();
        if(list.size()>0){
            limsJson.setCode(0);
            limsJson.setData(list);
        }
        return limsJson;

    }
    /**
    * 创建作者:   庞君
    * 创建日期:   9:08 2019/12/10
    * 方法介绍:   设备类型根据typeCode查询能力项
    * 参数说明:   No such property: code for class: Script1
    * @return     java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
    */
    @ResponseBody
    @RequestMapping("findBytyoeCodeTree")
    public  LimsJson findBytyoeCodeTree(String typeCode,Integer equipTypeId){
        return equipCapyService.findBytyoeCodeTree(typeCode,equipTypeId);
    }
    /**
    * 创建作者:   庞君
    * 创建日期:   16:14 2019/12/5
    * 方法介绍:   设备能力参数类型下拉框数据源
    * 参数说明:   No such property: code for class: Script1
    * @return
    */
    @RequestMapping("equipTypeCodeList")
    @ResponseBody
    public  LimsJson equipTypeCodeList(){
        return equipCapyService.equipTypeCodeList();
    }
}
